//package com.bsj.power.sdk.config.hksdk.event;
//
//import com.bsj.power.sdk.config.hksdk.HCNetSDK;
//import com.sun.jna.Pointer;
//import lombok.extern.slf4j.Slf4j;
//
//import java.io.UnsupportedEncodingException;
//import java.time.LocalDateTime;
//
//import static com.bsj.power.sdk.config.hksdk.HKSDKClientManage.hCNetSDK;
//
///**
// * @author LiJiaXin
// * @version 1.0.0
// * @description EventSearch
// * @time 2024/12/31 16:19
// */
//@Slf4j
//public class EventSearch {
//
//    /**
//     * 门禁事件查询，基于起止时间，事件类型进行查询
//     *
//     * @param lUserID
//     * @throws UnsupportedEncodingException
//     * @throws InterruptedException
//     */
//    public static void searchAllEvent(int lUserID) throws UnsupportedEncodingException, InterruptedException {
//        int i = 0; //事件条数
//        HCNetSDK.NET_DVR_ACS_EVENT_COND struAcsEventCond = new HCNetSDK.NET_DVR_ACS_EVENT_COND();
//        struAcsEventCond.read();
//        struAcsEventCond.dwSize = struAcsEventCond.size();
//        //查询全部主次类型的报警
//        struAcsEventCond.dwMajor = 0; // 主次事件类型设为0，代表查询所有事件
//        struAcsEventCond.dwMinor = 0; //
//
//        //结束时间（当前时间）
//        LocalDateTime endTime = LocalDateTime.now();
//        //两秒前（开始时间）
//        LocalDateTime startTime = endTime.minusSeconds(2);
//
//        //开始时间
//        struAcsEventCond.struStartTime.dwYear = startTime.getYear();
//        struAcsEventCond.struStartTime.dwMonth = startTime.getMonthValue();
//        struAcsEventCond.struStartTime.dwDay = startTime.getDayOfMonth();
//        struAcsEventCond.struStartTime.dwHour = startTime.getHour();
//        struAcsEventCond.struStartTime.dwMinute = startTime.getMinute();
//        struAcsEventCond.struStartTime.dwSecond = startTime.getSecond();
//
//        //结束时间
//        struAcsEventCond.struEndTime.dwYear = endTime.getYear();
//        struAcsEventCond.struEndTime.dwMonth = endTime.getMonthValue();
//        struAcsEventCond.struEndTime.dwDay = endTime.getDayOfMonth();
//        struAcsEventCond.struEndTime.dwHour = endTime.getHour();
//        struAcsEventCond.struEndTime.dwMinute = endTime.getMinute();
//        struAcsEventCond.struEndTime.dwSecond = endTime.getSecond();
//        struAcsEventCond.wInductiveEventType = 1;
//        struAcsEventCond.byPicEnable = 0; //是否带图片，0-不带图片，1-带图片
//        struAcsEventCond.write();
//        Pointer ptrStruEventCond = struAcsEventCond.getPointer();
//        int m_lSearchEventHandle = hCNetSDK.NET_DVR_StartRemoteConfig(lUserID, HCNetSDK.NET_DVR_GET_ACS_EVENT, ptrStruEventCond, struAcsEventCond.size(), null, null);
//        if (m_lSearchEventHandle <= -1) {
//            System.out.println("NET_DVR_StartRemoteConfig调用失败，错误码：" + hCNetSDK.NET_DVR_GetLastError());
//        }
//        HCNetSDK.NET_DVR_ACS_EVENT_CFG struAcsEventCfg = new HCNetSDK.NET_DVR_ACS_EVENT_CFG();
//        struAcsEventCfg.read();
//        struAcsEventCfg.dwSize = struAcsEventCfg.size();
//        struAcsEventCfg.write();
//        Pointer ptrStruEventCfg = struAcsEventCfg.getPointer();
//        for (int j = 0; j < struAcsEventCfg.dwSize; j--) {
//
//        }
//        while (true) {
//            System.out.println("i=" + i);
//            int dwEventSearch = hCNetSDK.NET_DVR_GetNextRemoteConfig(m_lSearchEventHandle, ptrStruEventCfg, struAcsEventCfg.size());
//            if (dwEventSearch <= -1) {
//                System.out.println("NET_DVR_GetNextRemoteConfig接口调用失败，错误码：" + hCNetSDK.NET_DVR_GetLastError());
//            }
//            if (dwEventSearch == HCNetSDK.NET_SDK_GET_NEXT_STATUS_NEED_WAIT) {
//                System.out.println("配置等待....");
//                Thread.sleep(10);
//                continue;
//            } else if (dwEventSearch == HCNetSDK.NET_SDK_NEXT_STATUS__FINISH) {
//                System.out.println("获取事件完成");
//                break;
//            } else if (dwEventSearch == HCNetSDK.NET_SDK_GET_NEXT_STATUS_FAILED) {
//                System.out.println("获取事件出现异常");
//                break;
//            } else if (dwEventSearch == HCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS) {
//                struAcsEventCfg.read();
//
//                //获取的事件信息通过struAcsEventCfg结构体进行解析，
//                log.info("第" + i + "条获取事件成功, 报警主类型：" + Integer.toHexString(struAcsEventCfg.dwMajor) + "报警次类型：" + Integer.toHexString(struAcsEventCfg.dwMinor) + "卡号：" + new String(struAcsEventCfg.struAcsEventInfo.byCardNo).trim());
//                log.info("第{}条获取事件成功，报警主类型：{}，报警次类型：{}，卡号：{}，工号1dwEmployeeNo：{}，工号2byEmployeeNo：{}，时间：{}-{}-{} {}:{}:{}，读卡器编号：{}，门编号：{}，事件触发器编号：{}，设备编号：{}，设备编号原数据：{}"
//                        , i, Integer.toHexString(struAcsEventCfg.dwMajor), Integer.toHexString(struAcsEventCfg.dwMinor), new String(struAcsEventCfg.struAcsEventInfo.byCardNo).trim(),
//                        struAcsEventCfg.struAcsEventInfo.dwEmployeeNo, new String(struAcsEventCfg.struAcsEventInfo.byEmployeeNo), struAcsEventCfg.struTime.dwYear, struAcsEventCfg.struTime.dwMonth,
//                        struAcsEventCfg.struTime.dwDay, struAcsEventCfg.struTime.dwHour, struAcsEventCfg.struTime.dwMinute, struAcsEventCfg.struTime.dwSecond,
//                        struAcsEventCfg.struAcsEventInfo.dwCardReaderNo, struAcsEventCfg.struAcsEventInfo.dwDoorNo, struAcsEventCfg.struAcsEventInfo.dwCaseSensorNo,
//                        String.valueOf(struAcsEventCfg.struAcsEventInfo.byDeviceNo), struAcsEventCfg.struAcsEventInfo.byDeviceNo);
//                /**
//                 * 工号有两个字段，dwEmployeeNo表示工号，当值为0时，表示无效，解析byEmployeeNo参数
//                 */
//                log.info("第" + i + "条事件工号1dwEmployeeNo：" + struAcsEventCfg.struAcsEventInfo.dwEmployeeNo);
//                log.info("第" + i + "条事件工号2byEmployeeNo：" + new String(struAcsEventCfg.struAcsEventInfo.byEmployeeNo));
////                //人脸温度数据，需要设备和支持测温功能
////                System.out.println("人脸温度：" + struAcsEventCfg.struAcsEventInfo.fCurrTemperature + "是否异常:" + struAcsEventCfg.struAcsEventInfo.byIsAbnomalTemperature);
////                //口罩功能，需要设备支持此功能 0-保留，1-未知，2-不戴口罩，3-戴口罩
////                System.out.println("是否带口罩:"+struAcsEventCfg.struAcsEventInfo.byMask);
//                log.info("刷卡时间：年：" + struAcsEventCfg.struTime.dwYear + " 月：" + struAcsEventCfg.struTime.dwMonth + " 日：" + struAcsEventCfg.struTime.dwDay +
//                        " 时：" + struAcsEventCfg.struTime.dwHour + " 分：" + struAcsEventCfg.struTime.dwMinute + " 秒：" + struAcsEventCfg.struTime.dwSecond);
//                log.info("刷卡信息：" + new String(struAcsEventCfg.struAcsEventInfo.byCardNo));
//
//
////                //人脸图片保存
////                if (struAcsEventCfg.dwPicDataLen>0 || struAcsEventCfg.pPicData != null )
////                {
////                    FileOutputStream fout;
////                    try {
////                        /**
////                         * 人脸图片保存路径
////                         */
////                        String filename = ".\\pic\\"+i+"_event.jpg";
////                        fout = new FileOutputStream(filename);
////                        //将字节写入文件
////                        long offset = 0;
////                        ByteBuffer buffers = struAcsEventCfg.pPicData.getByteBuffer(offset, struAcsEventCfg.dwPicDataLen);
////                        byte[] bytes = new byte[struAcsEventCfg.dwPicDataLen];
////                        buffers.rewind();
////                        buffers.get(bytes);
////                        fout.write(bytes);
////                        fout.close();
////                    } catch (FileNotFoundException e) {
////                        // TODO Auto-generated catch block
////                        e.printStackTrace();
////                    } catch (IOException e) {
////                        // TODO Auto-generated catch block
////                        e.printStackTrace();
////                    }
////                }
//                i++;
//                break;
//            }
//        }
//        i = 0;
//        if (!hCNetSDK.NET_DVR_StopRemoteConfig(m_lSearchEventHandle)) {
//            System.out.println("NET_DVR_StopRemoteConfig接口调用失败，错误码：" + hCNetSDK.NET_DVR_GetLastError());
//        } else {
//            System.out.println("NET_DVR_StopRemoteConfig接口成功");
//        }
//        return;
//    }
//
//}
